MODULE fem_global_types

   IMPLICIT NONE
   PUBLIC   

!------------------------------------------------------------------------------

   ! We select here the REAL and INTEGER precisions
   !   INTEGER, PARAMETER :: fem_INTK  = SELECTED_INT_KIND(9),           &
   !                         fem_REALK = SELECTED_REAL_KIND(XXX) 
   ! Use standard integers and REAL*8 double precision floats
   INTEGER, PARAMETER :: fem_INTK  = KIND(1),                         &
                         fem_REALK = KIND(1D0) 

!===============================================================================

   TYPE fem_scheme
      ! Number of node in a single 1D element
      INTEGER(fem_INTK) :: FEFNNod1D
      ! Number of node in a single 3D element
      INTEGER(fem_INTK) :: FEFNNod3D
      ! Order of finite element
      INTEGER(fem_INTK) :: FEFNthShp
      ! Length between nodes in 1D
      REAL(fem_REALK)   :: FEFNodEdg(3)
      ! Total number of nodes in 1D in whole solution space
      INTEGER(fem_INTK) :: FEFNPt1D(3)
      ! Total number of nodes in 3D in whole solution space
      INTEGER(fem_INTK) :: FEFNPt3D
      ! Total number of elements in 1D
      INTEGER(fem_INTK) :: FEFNElm1D(3)
      ! Total number of elements in 3D
      INTEGER(fem_INTK) :: FEFNElm3D
      ! Total number of interior points in 3D
      INTEGER(fem_INTK) :: FEFNNB3D
   END TYPE fem_scheme

!------------------------------------------------------------------------------

END MODULE fem_global_types

